/*******************************************
  Jose Andres Lara Vecino

  Author       : $Author: cainlara@gmail.com $
  Last CheckIn : $Date: 2012-06-22 20:12:29 +0000 (Fri, 22 Jun 2012) $
  Revision     : $Revision: 97 $
*******************************************/

package gui.usuario;

import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;

import javax.swing.JTabbedPane;

import utilidad.IPropiedades;
import frente.Usuario;

/**
 * Panel principal del dialogo de edicion de Usuarios.
 * <P>
 * Este panel, es incrustado en el dialogo 
 * de edicion de <code>Usuario</code>. Contiene los 
 * componentes necesarios para crear un nuevo 
 * <code>Usuario</code> o para editar uno existente.
 * 
 * @see Usuario
 * @see EditarUsuarioPanelControlador
 * 
 * @author jose.lara 07.06.2012
 */
public class EditarUsuarioPanel extends JTabbedPane {
    private static final long serialVersionUID = 6353653332098606683L;
    
    private EditarUsuarioPanelGeneral general           = null;
    private EditarUsuarioPanelControlador controlador   = null;
    
    public EditarUsuarioPanel() {
        super();
        general = new EditarUsuarioPanelGeneral();
        general.addPropertyChangeListener(new PropertyChangeListener() {
            
            @Override
            public void propertyChange(PropertyChangeEvent evt) {
                if(evt.getPropertyName().equals(IPropiedades.CAMBIO_DATOS)) {
                    notificarCambio();
                }
            }
        });
        
        add(general);
    }
    
    protected EditarUsuarioPanelGeneral getGeneral() {
        return general;
    }
    
    protected EditarUsuarioPanelControlador getControlador() {
        if(controlador == null) {
            controlador = new EditarUsuarioPanelControlador(this);
        }
        
        return controlador;
    }
    
    protected void setValoresUsuario(Usuario usuario) {
        getGeneral().setValoresUsuario(usuario);
    }
    
    private void notificarCambio() {
        firePropertyChange(IPropiedades.CAMBIO_DATOS, false, true);
    }
}